package com.qezhhnjy.leetcode.question.tree;

import com.qezhhnjy.leetcode.entity.TreeNode;

/**
 * @author qezhhnjy
 * @date 2020/12/20-20:12
 * <p>
 * 如果二叉树每个节点都具有相同的值，那么该二叉树就是单值二叉树。
 * <p>
 * 只有给定的树是单值二叉树时，才返回 true；否则返回 false。
 */
public class UniqueValueBinaryTree {
    public boolean result = true;
    public int val;

    public boolean isUnivalTree(TreeNode root) {
        if (root == null) return true;
        val = root.val;
        pre(root.left);
        pre(root.right);
        return result;
    }

    private void pre(TreeNode root) {
        if (!result) return;
        if (root == null) return;
        if (root.val != val) result = false;
        pre(root.left);
        pre(root.right);
    }
}
